package cn.com.yusys.yusp.admin.repository.mapper;

import cn.com.yusys.yusp.admin.domain.AdminSmUser;
import cn.com.yusys.yusp.commons.mapper.CommonMapper;
import cn.com.yusys.yusp.commons.mapper.QueryModel;

import java.util.List;
import java.util.Map;

/**
 * 
 * @项目名称: yusp-admin
 * @类名称: AdminSmUserMapper
 * @类描述: 用户管理mapper
 * @功能描述:
 * @创建人: hujun3@yusys.com.cn
 * @创建时间: 2017-12-25 10:42
 * @修改备注:
 * @修改记录: 修改时间 修改人员 修改原因
 *        -------------------------------------------------------------
 * @version 1.0.0
 * @Copyright (c) 2017宇信科技-版权所有
 */
public interface AdminSmUserMapper extends CommonMapper<AdminSmUser> {

	/**
	 * 
	 * @方法名称: queryUserByPage
	 * @方法描述: 分页查询
	 * @参数与返回说明:
	 * @算法描述:
	 */
	List<Map<String, Object>> queryUserByPage(QueryModel param);

	/**
	 * 
	 * @方法名称:removeUserRole
	 * @方法描述:根据用户id删除用户角色数据
	 * @参数与返回说明:
	 * @算法描述:
	 */
	int removeUserRole(Map<String, String> paramMap);

	/**
	 * 
	 * @方法名称:removeUserDuty
	 * @方法描述:根据用户id删除用户岗位数据
	 * @参数与返回说明:
	 * @算法描述:
	 */
	int removeUserDuty(Map<String, String> paramMap);

	/**
	 * 
	 * @方法名称:removeUserOrg
	 * @方法描述:根据用户id删除用户授权机构数据
	 * @参数与返回说明:
	 * @算法描述:
	 */
	int removeUserOrg(Map<String, String> paramMap);

	/**
	 * 
	 * @方法名称: getUserRole
	 * @方法描述: 查询用户角色数据
	 * @参数与返回说明: userId 用户id
	 * @算法描述:
	 */
	List<Map<String, Object>> getUserRole(Map<String, String> paramMap);

	/**
	 *
	 * @方法名称: getListByRolests
	 * @方法描述: 查询用户所在机构及上级机构
	 * @参数与返回说明:
	 * @算法描述:
	 */
	String getOrgIds(String orgId);

	/**
	 *
	 * @方法名称: getListByRolests
	 * @方法描述: 查询角色数据，只可关联用户所在机构及上级机构的生效角色
	 * @参数与返回说明:
	 * @算法描述:
	 */
	List<Map<String, Object>> getListByRolests(String[] orgIds);

	/**
	 * 
	 * @方法名称: findQueryUserByParam
	 * @方法描述: 查询用户数据
	 * @参数与返回说明: userCode 用户Code| userName 用户名 |loginCode 登录名
	 * @算法描述:
	 */
	List<Map<String, Object>> findQueryUserByParam(Map<String, String> paramMap);

	/**
	 *
	 * @方法名称: getListByRolests
	 * @方法描述: 查询岗位数据，只可关联用户所在机构及上级机构的生效岗位
	 * @参数与返回说明:
	 * @算法描述:
	 */

	List<Map<String, Object>> getListByDuty(String[] orgIds);

	/**
	 * 
	 * @方法名称: getUserDuty
	 * @方法描述: 查询用户岗位数据
	 * @参数与返回说明: userId 用户id
	 * @算法描述:
	 */
	List<Map<String, Object>> getUserDuty(Map<String, String> paramMap);

	/**
	 * 
	 * @方法名称: getUserOrg
	 * @方法描述: 查询用户授权机构数据
	 * @参数与返回说明: userId 用户id
	 * @算法描述:
	 */
	List<Map<String, Object>> getUserOrg(Map<String, String> paramMap);

	/**
	 * 
	 * @方法名称: updateUserSts
	 * @方法描述: 更新用户状态
	 * @参数与返回说明: sts 状态| id 主键ID
	 * @算法描述:
	 */
	int updateUserSts(Map<String, String> paramMap);

	/**
	 * 
	 * @方法名称:getUserListByModel
	 * @方法描述:查询用户
	 * @参数与返回说明:
	 * @算法描述:
	 */
	List<AdminSmUser> getUserListByModel(QueryModel model);

	/**
	 * 重置用户密码
	 * 
	 * @方法名称: resetUserPassword
	 * @方法描述:
	 * @参数与返回说明:
	 * @算法描述:
	 */
	int resetUserPassword(Map<String, Object> paramMap);
	
	/**
	 * 根据登录代码获取用户Id
	 * @param loginCode
	 * @return
	 */
	String getUserIdByLoginCode(String loginCode);

	Map<String, Object> selectUserByUserId(Map<String, Object> paramMap);

	int updateUserPassword(Map<String, Object> paramMap);
}
